package project02.controller.login;

import java.util.logging.Logger;
import org.slim3.controller.Controller;
import org.slim3.controller.Navigation;
import org.slim3.controller.validator.Validators;
import org.slim3.util.BeanUtil;

import project02.cool.Util;
import project02.dao.UserInfoDao;
import project02.model.UserInfo;

public class Reg02Controller extends Controller {

    private static final Logger logger = Logger.getLogger(Reg02Controller.class.getName());

    private UserInfoDao dao = new UserInfoDao();
    private Util util = Util.getInstance();

    @SuppressWarnings("null")
    @Override
    public Navigation run() {

        if (!Validate()) {
            return forward("reg01.jsp");
        }

        try {
            if (util.chkUserId(asString("userId"))) {
                requestScope("confirmJs", "<script type=\"text/javascript\"> window.alert('このユーザIDはすでに使用されています'); location.href = '/login/reg01'; </script>");
                return forward("reg01.jsp");
            }
        } catch (Exception e1) {
            // TODO 自動生成された catch ブロック
            e1.printStackTrace();
            requestScope("confirmJs", "<script type=\"text/javascript\"> window.alert('このユーザIDはすでに使用されています'); location.href = '/login/reg01'; </script>");
            return forward("reg01.jsp");
        }


        UserInfo u = new UserInfo();
        UserInfo result = new  UserInfo();

        BeanUtil.copy(request, u);

        try {
            result = dao.makePersistentInTx(u);
        } catch (Exception e) {
            requestScope("confirmJs", "<script type=\"text/javascript\"> window.alert('" + e.getMessage() + "'); location.href = '/login/reg01'; </script>");
            logger.info(e.getMessage());
            return forward("reg01.jsp");
        }
        if (result != null || result.getUserId().equals(u.getUserId())) {
            requestScope("confirmJs", "<script type=\"text/javascript\"> window.alert('登録が終了しました'); location.href = '/login/'; </script>");
        } else {

            requestScope("confirmJs", "<script type=\"text/javascript\"> window.alert('登録ができませんでした'); location.href = '/login/reg01'; </script>");
        }

        return forward("reg01.jsp");
    }

    private boolean Validate() {

        Validators val = new Validators(request);
        val.add("userId", val.required("ユーザIDは必須です."));
        val.add("password", val.required("パスワードは必須です."));
        val.add("userName", val.required("ユーザ名は必須です."));
        val.add("userNameKana", val.required("ユーザ名かなは必須です."));
        return val.validate();
    }
}
